
#ifndef _ka_app_window_h
#define _ka_app_window_h

#include "ka-system/types.h"

namespace ka {
    class IWindowDriver {
    public:
        virtual ~IWindowDriver();
        virtual void *createWindowHandle() = 0;
        virtual void destroyWindowHandle(void *handle) = 0;
        virtual void setWindowTitle(void *handle, const char *title) = 0;
        virtual void showWindow(void *handle) = 0;
    };
    
    class Window {
    public:
        Window();
        Window(IWindowDriver *driver);
        ~Window();
        void *getWindowHandle();
        static IWindowDriver *getDefaultWindowDriver();
        void setTitle(const char *title);
        void show();
    private:
        IWindowDriver *_driver;
        void *_handle;
    };
}

#endif